2.3k words
一、CAN物理层 1、电气特性 2、CAN的电平形式 二、CAN总线帧格式 1、数据帧 帧起始(标准/扩展格式相同) 仲裁段(标准/扩展格式不同) 控制段(标准/扩展格式不同) 数据段(标准/扩展格式相同) CRC段(标准/扩展格式相同) ACK段(标准/扩展格式相同) 帧结束(标准/扩展格式相同) 2、遥控帧 3、错误帧 4、过载帧 5、帧间隔 四、位时序 五、波特率的计算 六、位填充 1、发送单元的工作 2、接收单元的工作 七、附录 1、数据长度码和字节关系 CAN通讯是一种多主总线异步通信协议,采用差分信号传输,具有高可靠性、实时性强、抗干扰能力好等特点。它广泛应用于汽车电子、工业控制等领域,用于设备间数据快速准确传输,保障系统稳定运行。 一、CAN物理层1、电气特性 ​ 总线结构物理特征如下图所示(左:闭环;右:开环) CAN总线由两根信号线组成,使用的是差分信号,是一种异步通讯CAN总线网络...
1.2k words
创建虚拟环境 查看所有虚拟环境 退出当前虚拟环境 激活/进入虚拟环境 删除某一虚拟环境 查看当前虚拟环境下的所有的安装包 安装或卸载包(进入虚拟环境之后) 分享虚拟环境 源服务器管理 pip源 创建虚拟环境123456789# 创建名为env_name的虚拟环境conda create --name env_name# 创建名为env_name的虚拟环境,指定python版本conda create --name env_name python=3.8# 创建指定python版本下包含某些包的env_name虚拟环境conda create --name env_name python=3.6 pandas numpy scipy 查看所有虚拟环境123conda info --envs# 或者conda env list 退出当前虚拟环境1deactivate 激活/进入虚拟环境1activate env_name 删除某一虚拟环境1conda remove --name env_name --all 查看当前虚拟环境...
670 words
1、添加源服务器 2、创建运行环境 3、vscode安装PYQT Integration插件 1、添加源服务器12conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ 2、创建运行环境1234567891011# 创建虚拟环境conda create --name pyqt6-python3.8 python=3.8 # 激活环境conda activate pyqt6-python3.8# 安装PyQt6pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple/# 安装PyQt6-toolspip install PyQt6-tools -i https://pypi.tuna.tsinghua.ed...
671 words
一、常用寄存器操作 二、寄存器写操作 一、常用寄存器操作12345678/* 设置位 (置1) */*pReg |= (1 << bit_position);/* 清除位 (置0) */*pReg &= ~(1 << bit_position);/* 取反 */*pReg ^= (1 << bit_position); 二、寄存器写操作如下所示为配置Pc13引脚为输出模式的错误示例: 12345678/* 配置为通用输出 * 00:Input mode * 01:General purpose output mode * 10:Alternate function mode * 11:Analog mode(reset state)*/pReg = (uint32_t *)(0x48000800 + 0x00);*pReg |= 0x01 << 26; 默认配置为为11,上述操作只修改了第二位,第一位未修改,导致配置错误,正确配置如下: 1234/* 配置为通用输出 */pReg = (uint32_t *...
1.7k words
一、存储器映射 STM32H750存储器映射 二、Block 0 三、Block 1 四、Block 2 STM32H750 是 ST 基于 Cortex-M7 内核的高性能 MCU,其复杂的 存储器架构 和 多总线矩阵 为开发者提供了极高的灵活性,但也带来了学习难度。深入了解STM32存储器映射和物理内存布局,了解不同存储区域的用途与性能差异,对于我们实际开发,如bootloader程序编写、MPU配置、链接脚本等,有着巨大帮助。 一、存储器映射STM32是一个32为单片机,它可以很方便访问4GB以内的存储空间,存储器本身是没有地址信息的,对存储器分配地址的过程就叫存储器映射。ST将所有的存储器及外设资源都映射在一个4GB的地址空间上(8个块),从而可以通过访问对应的地址,访问具体的外设。其映射关系如下图所示: STM32H750存储器映射二、Block 0 地址范围 功能 0x0000 0000 ~ 0x0000 FFFF ITCM RAM,只能被CPU和MDMA 访问,属于高速的RAM 0x0001 0000 ~ 0x000F FFFF ...
1.9k words
对上述分散加载文件逐行解析如下: 一、定义加载区域(Load Region) 2)定义执行区域(Execution Region) (3)指定复位向量和启动代码 (4)C 库初始化段 (5)所有只读代码和常量 (6)所有可执行的只读代码 (7)定义 RAM 区域 (8)分配读写数据和零初始化数据 在 STM32嵌入式开发 中,分散加载文件(.sct或.ld文件)是ARM编译器用来定义代码和数据在存储空间的布局的链接脚本。它告诉编译器如何将代码和数据分配到不同的存储区域(如Flash、RAM、TCM等)。合理使用分散加载文件可以优化性能、提高实时性,甚至增强系统稳定性。 STM32的sct分散加载描述文件如下: 123456789101112131415; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *******************************...
2.2k words
在工程下创建.vscode文件夹 在工程下创建.vscode文件夹 c_cpp_properties.json文件 1234567891011121314151617181920212223242526272829303132333435363738394041424344{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "./Core/Inc", "./Drivers/STM32h7xx_HAL_Driver/Inc", "./Drivers/STM32h7xx_HAL_Driver...
2.3k words
一、易失性存储器(RAM) 1、动态随机存储器DRAM(Dynamic RAM) 2、静态随机存储器SRAM 二、非易失性存储器(ROM) 三、非易失性存储器(FLASH) 四、应用 五、新兴存储器技 六、其他 1、为什么叫 NOR / NAND? 2、什么是DDR模式和SDR模式? 存储器是计算机系统中不可或缺的重要组成部分。它主要用于存储程序代码和数据,使计算机具备记忆和运行的功能。 存储器按其存储介质特性主要分为两大类:易失性存储器和非易失性存储器。 易失性存储器:在断电后数据会丢失,如 RAM。 非易失性存储器:即使断电也能保留数据,如 ROM、Flash,以及一些新兴技术。 一、易失性存储器(RAM)RAM(Random Access Memory)是易失性的半导体存储器,用于存储运行中的程序和数据。 1、动态随机存储器DRAM(Dynamic RAM)动态随机存储器(DRAM) 是一种易失性存储器,采用电容存储数据(电容带电表示 1,不带电表示 0),需要定期刷新以维持数据完整性。由于其依赖时钟信号进行数据传输,因此通常被称为同步 D...
136 words
一、更新下载镜像源 一、更新下载镜像源修改目标文件: 1/etc/apt/sources.list 地址替换为下述地址: 阿里源 1mirrors.aliyun.com 清华源 1mirrors.tuna.tsinghua.edu.cn 更新本地安装包数据库: 1sudo apt update
1.8k words
应用一、为基本数据类型定义新的类型名 应用二、为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称 应用三、定义数组类型 应用四、定义指针类型 1、定义数组指针类型 2、定义函数指针类型 五、总结 良好的代码习惯和高效的类型定义在项目中扮演着至关重要的角色。typedef,它不仅是一个语法糖,更是提升代码质量和可维护性的利器。在这篇文章中,将为你介绍typedef 4 种应用方式。 应用一、为基本数据类型定义新的类型名用uint32_t替代unsigned int声明变量 12345/* 变量名重定义 */typedef unsigned int uint32_t;/* 定义一个`unsigned int`类型的变量 */uint32_t count = 0; 应用二、为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称使用结构体定义以及声明结构体变量: 123456789struct TagPoint{ double x; double y; double z;};/* 定义一个三维坐标结构体 *//...